package com.ruoyi.statistics.service;

import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;

/**
 * 订单数据分析Service接口
 * 
 * @author ruoyi
 * @date 2025-01-18
 */
public interface IOrderAnalyseService 
{
    /**
     * 获取订单核心指标数据
     * 
     * @param orgId 组织ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 核心指标数据
     */
    public Map<String, Object> getOrderMetrics(Long orgId, String startDate, String endDate);

    /**
     * 获取订单详情列表
     * 
     * @param orgId 组织ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param pageNum 页码
     * @param pageSize 页大小
     * @return 订单详情列表
     */
    public Map<String, Object> getOrderDetails(Long orgId, String startDate, String endDate, Integer pageNum, Integer pageSize);

    /**
     * 获取订单转化漏斗数据
     * 
     * @param orgId 组织ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 转化漏斗数据
     */
    public List<Map<String, Object>> getOrderFunnel(Long orgId, String startDate, String endDate);

    /**
     * 获取订单趋势数据
     * 
     * @param orgId 组织ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @param timeType 时间类型（day/week/month）
     * @return 趋势数据
     */
    public List<Map<String, Object>> getOrderTrend(Long orgId, String startDate, String endDate, String timeType);

    /**
     * 获取订单金额分布数据
     * 
     * @param orgId 组织ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 订单金额分布数据
     */
    public List<Map<String, Object>> getOrderAmountDistribution(Long orgId, String startDate, String endDate);

    /**
     * 导出订单分析数据
     * 
     * @param response HTTP响应
     * @param orgId 组织ID
     * @param startDate 开始日期
     * @param endDate 结束日期
     */
    public void exportOrderData(HttpServletResponse response, Long orgId, String startDate, String endDate);
}